package com.vn.ld.btc.dao.entity;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.NamedQuery;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * The persistent class for the customer_assets database table.
 */
@Entity
@Table(name = "customer_assets")
@NamedQuery(name = "CustomerAssets.findAll", query = "SELECT c FROM CustomerAssets c")
public class CustomerAssets implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@Column(name = "customer_assets_id", unique = true, nullable = false)
	private Integer customerAssetsId;
	
	@Column(name = "assets_type")
	private Integer assetsType;

	@Column(name = "active_flg", nullable = false)
	private Integer activeFlg;

	@Column(name = "available_amount", nullable = false, precision = 10, scale = 6)
	private BigDecimal availableAmount;

	@Column(name = "deposit_fee_abs", precision = 10, scale = 6)
	private BigDecimal depositFeeAbs;

	@Column(name = "deposit_fee_percent")
	private Float depositFeePercent;

	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "input_date")
	private Date inputDate;

	@Column(name = "max_withdraw", precision = 10, scale = 6)
	private BigDecimal maxWithdraw;

	@Column(name = "min_deposit", precision = 10, scale = 6)
	private BigDecimal minDeposit;

	@Column(name = "reserved_amount", nullable = false, precision = 10, scale = 6)
	private BigDecimal reservedAmount;

	@Column(name = "total_amount", nullable = false, precision = 10, scale = 6)
	private BigDecimal totalAmount;

	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "update_date")
	private Date updateDate;

	@Column(name = "withdraw_fee_abs", precision = 10, scale = 6)
	private BigDecimal withdrawFeeAbs;

	@Column(name = "withdraw_fee_percent")
	private Float withdrawFeePercent;

	@Column(name = "withdrawable_amount", nullable = false, precision = 10, scale = 6)
	private BigDecimal withdrawableAmount;

	// bi-directional many-to-one association to CustomerService
	@OneToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "customer_service_id", nullable = false)
	private CustomerService customerService;

	public CustomerAssets() {
	}

	public Integer getCustomerAssetsId() {
		return this.customerAssetsId;
	}

	public void setCustomerAssetsId(Integer customerAssetsId) {
		this.customerAssetsId = customerAssetsId;
	}

	public Integer getAssetsType() {
		return assetsType;
	}

	public void setAssetsType(Integer assetsType) {
		this.assetsType = assetsType;
	}

	public Integer getActiveFlg() {
		return this.activeFlg;
	}

	public void setActiveFlg(Integer activeFlg) {
		this.activeFlg = activeFlg;
	}

	public BigDecimal getAvailableAmount() {
		return this.availableAmount;
	}

	public void setAvailableAmount(BigDecimal availableAmount) {
		this.availableAmount = availableAmount;
	}

	public BigDecimal getDepositFeeAbs() {
		return this.depositFeeAbs;
	}

	public void setDepositFeeAbs(BigDecimal depositFeeAbs) {
		this.depositFeeAbs = depositFeeAbs;
	}

	public Float getDepositFeePercent() {
		return this.depositFeePercent;
	}

	public void setDepositFeePercent(Float depositFeePercent) {
		this.depositFeePercent = depositFeePercent;
	}

	public Date getInputDate() {
		return this.inputDate;
	}

	public void setInputDate(Date inputDate) {
		this.inputDate = inputDate;
	}

	public BigDecimal getMaxWithdraw() {
		return this.maxWithdraw;
	}

	public void setMaxWithdraw(BigDecimal maxWithdraw) {
		this.maxWithdraw = maxWithdraw;
	}

	public BigDecimal getMinDeposit() {
		return this.minDeposit;
	}

	public void setMinDeposit(BigDecimal minDeposit) {
		this.minDeposit = minDeposit;
	}

	public BigDecimal getReservedAmount() {
		return this.reservedAmount;
	}

	public void setReservedAmount(BigDecimal reservedAmount) {
		this.reservedAmount = reservedAmount;
	}

	public BigDecimal getTotalAmount() {
		return this.totalAmount;
	}

	public void setTotalAmount(BigDecimal totalAmount) {
		this.totalAmount = totalAmount;
	}

	public Date getUpdateDate() {
		return this.updateDate;
	}

	public void setUpdateDate(Date updateDate) {
		this.updateDate = updateDate;
	}

	public BigDecimal getWithdrawFeeAbs() {
		return this.withdrawFeeAbs;
	}

	public void setWithdrawFeeAbs(BigDecimal withdrawFeeAbs) {
		this.withdrawFeeAbs = withdrawFeeAbs;
	}

	public Float getWithdrawFeePercent() {
		return this.withdrawFeePercent;
	}

	public void setWithdrawFeePercent(Float withdrawFeePercent) {
		this.withdrawFeePercent = withdrawFeePercent;
	}

	public BigDecimal getWithdrawableAmount() {
		return this.withdrawableAmount;
	}

	public void setWithdrawableAmount(BigDecimal withdrawableAmount) {
		this.withdrawableAmount = withdrawableAmount;
	}

	public CustomerService getCustomerService() {
		return this.customerService;
	}

	public void setCustomerService(CustomerService customerService) {
		this.customerService = customerService;
	}

}
